package com.hbt.chat.logica;
 
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.SocketException;
import com.hbt.chat.gui.GUICliente;
       
public class ThreadEnvia implements Runnable {
    private final GUICliente main;
    private ObjectOutputStream salida;
    private String mensaje;
    private Socket conexion;
   
    public ThreadEnvia(Socket conexion, final GUICliente main){
        this.conexion = conexion;
        this.main = main;
       
        //Evento que ocurre al escribir en el areaTexto
        main.campoTexto.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                mensaje = event.getActionCommand();
                enviarDatos(mensaje); //se envia el mensaje
                main.campoTexto.setText(""); //borra el texto del enterfield
            } //Fin metodo actionPerformed
        }
        );//Fin llamada a addActionListener
    }
   
   //enviar objeto a cliente
   private void enviarDatos(String mensaje){
      try {
         salida.writeObject("Servidor>>> " + mensaje);
         salida.flush(); //flush salida a cliente
         main.mostrarMensaje("Servidor>>> " + mensaje);
      } //Fin try
      catch (IOException ioException){
         main.mostrarMensaje("Error escribiendo Mensaje");
      } //Fin catch  
     
   } //Fin methodo enviarDatos
 
   //manipula areaPantalla en el hilo despachador de eventos
    public void mostrarMensaje(String mensaje) {
        main.areaTexto.append(mensaje);
    }
   
    public void run() {
         try {
            salida = new ObjectOutputStream(conexion.getOutputStream());
            salida.flush();
        } catch (SocketException ex) {
        } catch (IOException ioException) {
          ioException.printStackTrace();
        } catch (NullPointerException ex) {
        }
    }  
   
}